annotate roundup/configuration.py @ 7864:b080cdb8b199

fix: document/fix wrapped HtmlProperty method. The wrapped method was not documented in reference.txt. It is now documented in reference.txt. The docstring documented that it would not break up long words. Fixed by adding break_long_words=False to prevent breaking string longer than the wrap length. Wrapping was breaking the hyperlinking of long urls. Added columns argument to set the wrap length (default 80 columns).
author John Rouillard <rouilj@ieee.org>
date Sun, 07 Apr 2024 15:27:18 -0400
parents 8b31893f5930
children 82093eb944d6
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.
7810
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
10 import binascii
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
11 import errno
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
12 import getopt
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
13 import logging
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
14 import logging.config
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
15 import os
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
16 import re
7810
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
17 import smtplib
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
18 import sys
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
19 import time
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
20
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
21 import roundup.date
7810
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
22 from roundup.anypy import random_
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
23 from roundup.anypy.strings import b2s
7810
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
24 from roundup.backends import list_backends
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
25 from roundup.i18n import _
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
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:
7810
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
28 import configparser # Python 3
6004
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
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
34 # Exceptions
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
35
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
36
6123
c177e7128dc9 issue2551083 Replace BaseException and Exception with RoundupException
John Rouillard <rouilj@ieee.org>
parents: 6053
diff changeset
37 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
38 pass
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
39
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
40
6557
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
41 class ParsingOptionError(ConfigurationError):
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
42 def __str__(self):
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
43 return self.args[0]
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
44
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
45
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
46 class NoConfigError(ConfigurationError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
47
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
48 """Raised when configuration loading fails
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
49
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
50 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
51
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
52 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
53
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
54 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
55 return "No valid configuration files found in directory %s" \
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
56 % self.args[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
57
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
58
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
59 class InvalidOptionError(ConfigurationError, KeyError, AttributeError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
60
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
61 """Attempted access to non-existing configuration option
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
62
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
63 Configuration options may be accessed as configuration object
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
64 attributes or items. So this exception instances also are
3820
771248aa8302 typos in docstrings
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3788
diff changeset
65 instances of KeyError (invalid item access) and AttributeError
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
66 (invalid attribute access).
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 Constructor parameter: option name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
69
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
70 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
71
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
72 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
73 return "Unsupported configuration option: %s" % self.args[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
74
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
75
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
76 class OptionValueError(ConfigurationError, ValueError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
77
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
78 """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
79
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
80 Constructor parameters: Option instance, offending value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
81 and optional info string.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
82
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
83 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
84
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
85 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
86 _args = self.args
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
87 _rv = "Invalid value for %(option)s: %(value)r" % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
88 "option": _args[0].name, "value": _args[1]}
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
89 if len(_args) > 2:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
90 _rv += "\n".join(("",) + _args[2:])
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
91 return _rv
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
92
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
93
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
94 class OptionUnsetError(ConfigurationError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
95
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
96 """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
97
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
98 Constructor parameters: Option instance.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
99
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
100 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
101
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
102 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
103 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
104
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
105
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
106 class UnsetDefaultValue:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
107
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
108 """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
109
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
110 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
111 return "NO DEFAULT"
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
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
114 NODEFAULT = UnsetDefaultValue()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
115
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
116
5878
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
117 def create_token(size=32):
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
118 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
119
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
120 # Option classes
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
121
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
122
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
123 class Option:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
124
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
125 """Single configuration option.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
126
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
127 Options have following attributes:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
128
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
129 config
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
130 reference to the containing Config object
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
131 section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
132 name of the section in the tracker .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
133 setting
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
134 option name in the tracker .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
135 default
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
136 default option value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
137 description
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
138 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
139 name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
140 "canonical name" of the configuration option.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
141 For items in the 'main' section this is uppercased
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
142 'setting' name. For other sections, the name is
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
143 composed of the section name and the setting name,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
144 joined with underscore.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
145 aliases
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
146 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
147 by old names used in previous Roundup versions.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
148 "Canonical name" is also included.
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 The name and aliases are forced to be uppercase.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
151 The setting name is forced to lowercase.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
152
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
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
155 class_description = None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
156
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
157 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
158 default=NODEFAULT, description=None, aliases=None):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
159 self.config = config
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
160 self.section = section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
161 self.setting = setting.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
162 self.default = default
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
163 self.description = description
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
164 self.name = setting.upper()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
165 if section != "main":
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
166 self.name = "_".join((section.upper(), self.name))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
167 if aliases:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
168 self.aliases = [alias.upper() for alias in list(aliases)]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
169 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
170 self.aliases = []
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
171 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
172 # convert default to internal representation
7811
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
173 _value = default if default is NODEFAULT else self.str2value(default)
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
174
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
175 # 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
176 self._value = self._default_value = _value
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
177
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
178 def str2value(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
179 """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
180 return value
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
181
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
182 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
183 """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
184
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
185 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
186 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
187 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
188
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
189 """
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
190 return str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
191
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
192 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
193 """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
194
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
195 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
196
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
197 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
198 if current:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
199 value = self._value
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
200 if value is NODEFAULT:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
201 return str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
202 else:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
203 return self._value2str(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
204
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
205 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
206 """Return current option value"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
207 if self._value is NODEFAULT:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
208 raise OptionUnsetError(self)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
209 return self._value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
210
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
211 def set(self, value):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
212 """Update the value"""
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
213 self._value = self.str2value(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
214
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
215 def reset(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
216 """Reset the value to default"""
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
217 self._value = self._default_value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
218
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
219 def isdefault(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
220 """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
221 return self._value == self._default_value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
222
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
223 def isset(self):
3820
771248aa8302 typos in docstrings
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3788
diff changeset
224 """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
225 return self._value != NODEFAULT
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
226
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
227 def __str__(self):
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
228 return self.value2str(self._value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
229
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
230 def __repr__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
231 if self.isdefault():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
232 _format = "<%(class)s %(name)s (default): %(value)s>"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
233 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
234 _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
235 return _format % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
236 "class": self.__class__.__name__,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
237 "name": self.name,
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
238 "default": self.value2str(self._default_value),
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
239 "value": self.value2str(self._value),
2618
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
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
242 def format(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
243 """Return .ini file fragment for this option"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
244 _desc_lines = []
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
245 for _description in (self.description, self.class_description):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
246 if _description:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
247 _desc_lines.extend(_description.split("\n"))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
248 # comment out the setting line if there is no value
7811
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
249 _is_set = "" if self.isset() else "#"
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
250
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
251 _rv = "# %(description)s\n# Default: %(default)s\n" \
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
252 "%(is_set)s%(name)s = %(value)s\n" % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
253 "description": "\n# ".join(_desc_lines),
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
254 "default": self.value2str(self._default_value),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
255 "name": self.setting,
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
256 "value": self.value2str(self._value),
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
257 "is_set": _is_set,
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
258 }
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
259 return _rv
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
260
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
261 def load_ini(self, config):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
262 """Load value from ConfigParser object"""
6557
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
263 try:
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
264 if config.has_option(self.section, self.setting):
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
265 self.set(config.get(self.section, self.setting))
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
266 except configparser.InterpolationSyntaxError as e:
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6514
diff changeset
267 raise ParsingOptionError(
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
268 _("Error in %(filepath)s with section [%(section)s] at "
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
269 "option %(option)s: %(message)s") % {
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
270 "filepath": self.config.filepath,
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
271 "section": e.section,
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
272 "option": e.option,
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
273 "message": str(e)})
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
274
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
275
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
276 class BooleanOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
277
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
278 """Boolean option: yes or no"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
279
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
280 class_description = "Allowed values: yes, no"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
281
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
282 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
283 if value:
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
284 return "yes"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
285 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
286 return "no"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
287
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
288 def str2value(self, value):
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
289 if isinstance(value, type("")):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
290 _val = value.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
291 if _val in ("yes", "true", "on", "1"):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
292 _val = 1
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
293 elif _val in ("no", "false", "off", "0"):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
294 _val = 0
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
295 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
296 raise OptionValueError(self, value, self.class_description)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
297 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
298 _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
299 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
300
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
301
3544
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
302 class WordListOption(Option):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
303
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
304 """List of strings"""
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
305
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
306 class_description = "Allowed values: comma-separated list of words"
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
307
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
308 def _value2str(self, value):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
309 return ','.join(value)
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
310
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
311 def str2value(self, value):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
312 return value.split(',')
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
313
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
314
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
315 class RunDetectorOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
316
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
317 """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
318
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
319 class_description = "Allowed values: yes, no, new"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
320
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
321 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
322 _val = value.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
323 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
324 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
325 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
326 raise OptionValueError(self, value, self.class_description)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
327
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
328
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
329 class CsrfSettingOption(Option):
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
330
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
331 """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
332
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
333 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
334
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
335 def str2value(self, value):
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
336 _val = value.lower()
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
337 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
338 return _val
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
339 else:
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
340 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
341
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
342
5212
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
343 class SameSiteSettingOption(Option):
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
344
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
345 """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
346 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
347
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
348 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
349
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
350 def str2value(self, value):
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
351 _val = value.lower()
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
352 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
353 return _val.capitalize()
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
354 else:
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
355 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
356
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
357
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
358 class DatabaseBackend(Option):
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
359 """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
360 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
361
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
362 def str2value(self, value):
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
363 _val = value.lower()
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
364 if _val in list_backends():
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
365 return _val
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
366 else:
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
367 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
368
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
369
5305
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
370 class HtmlToTextOption(Option):
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
371
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
372 """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
373 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
374 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
375 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
376 be used.
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
377
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
378 """
5305
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
379
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
380 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
381
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
382 def str2value(self, value):
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
383 _val = value.lower()
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
384 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
385 return _val
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
386 else:
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
387 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
388
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
389
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
390 class EmailBodyOption(Option):
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
391
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
392 """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
393 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
394
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
395 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
396
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
397 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
398 _val = value.lower()
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
399 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
400 return _val
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
401 else:
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
402 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
403
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
404
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
405 class IsolationOption(Option):
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
406 """Database isolation levels"""
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
407
7845
0c71ac9cdcd0 chore(lint): change class props from mutable lists to tuples
John Rouillard <rouilj@ieee.org>
parents: 7844
diff changeset
408 allowed = ('read uncommitted', 'read committed', 'repeatable read',
0c71ac9cdcd0 chore(lint): change class props from mutable lists to tuples
John Rouillard <rouilj@ieee.org>
parents: 7844
diff changeset
409 'serializable')
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
410 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
411 for a in allowed)
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
412
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
413 def str2value(self, value):
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
414 _val = value.lower()
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
415 if _val in self.allowed:
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
416 return _val
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
417 raise OptionValueError(self, value, self.class_description)
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
418
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
419
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
420 class IndexerOption(Option):
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
421 """Valid options for indexer"""
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
422
7845
0c71ac9cdcd0 chore(lint): change class props from mutable lists to tuples
John Rouillard <rouilj@ieee.org>
parents: 7844
diff changeset
423 allowed = ('', 'xapian', 'whoosh', 'native', 'native-fts')
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
424 class_description = "Allowed values: %s" % ', '.join("'%s'" % a
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
425 for a in allowed)
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
426
6604
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
427 # FIXME this is the result of running:
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
428 # SELECT cfgname FROM pg_ts_config;
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
429 # on a postgresql 14.1 server.
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
430 # So the best we can do is hardcode this.
7845
0c71ac9cdcd0 chore(lint): change class props from mutable lists to tuples
John Rouillard <rouilj@ieee.org>
parents: 7844
diff changeset
431 valid_langs = ("simple",
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
432 "custom1",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
433 "custom2",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
434 "custom3",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
435 "custom4",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
436 "custom5",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
437 "arabic",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
438 "armenian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
439 "basque",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
440 "catalan",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
441 "danish",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
442 "dutch",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
443 "english",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
444 "finnish",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
445 "french",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
446 "german",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
447 "greek",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
448 "hindi",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
449 "hungarian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
450 "indonesian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
451 "irish",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
452 "italian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
453 "lithuanian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
454 "nepali",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
455 "norwegian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
456 "portuguese",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
457 "romanian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
458 "russian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
459 "serbian",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
460 "spanish",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
461 "swedish",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
462 "tamil",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
463 "turkish",
7845
0c71ac9cdcd0 chore(lint): change class props from mutable lists to tuples
John Rouillard <rouilj@ieee.org>
parents: 7844
diff changeset
464 "yiddish")
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
465
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
466 def str2value(self, value):
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
467 _val = value.lower()
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
468 if _val in self.allowed:
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
469 return _val
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
470 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
471
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
472 def validate(self, options):
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
473
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
474 if self._value in ("", "xapian"):
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
475 try:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
476 import xapian
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
477 except ImportError:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
478 # indexer is probably '' and xapian isn't present
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
479 # so just return at end of method
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
480 pass
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
481 else:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
482 try:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
483 lang = options["INDEXER_LANGUAGE"]._value
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
484 xapian.Stem(lang)
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
485 except xapian.InvalidArgumentError:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
486 import textwrap
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
487 lang_avail = b2s(xapian.Stem.get_available_languages())
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
488 languages = textwrap.fill(_("Valid languages: ") +
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
489 lang_avail, 75,
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
490 subsequent_indent=" ")
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
491 raise OptionValueError(options["INDEXER_LANGUAGE"],
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
492 lang, languages)
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
493
6604
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
494 if self._value == "native-fts":
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
495 lang = options["INDEXER_LANGUAGE"]._value
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
496 if lang not in self.valid_langs:
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
497 import textwrap
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
498 languages = textwrap.fill(_("Expected languages: ") +
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
499 " ".join(self.valid_langs), 75,
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
500 subsequent_indent=" ")
6604
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
501 raise OptionValueError(options["INDEXER_LANGUAGE"],
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
502 lang, languages)
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
503
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
504
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
505 class MailAddressOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
506
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
507 """Email address
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
508
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
509 Email addresses may be either fully qualified or local.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
510 In the latter case MAIL_DOMAIN is automatically added.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
511
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
512 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
513
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
514 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
515 _val = Option.get(self)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
516 if "@" not in _val:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
517 _val = "@".join((_val, self.config["MAIL_DOMAIN"]))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
518 return _val
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
519
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
520
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
521 class FilePathOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
522
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
523 """File or directory path name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
524
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
525 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
526
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
527 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
528
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
529 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
530 "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
531
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
532 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
533 _val = Option.get(self)
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
534 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
535 _val = os.path.join(self.config["HOME"], _val)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
536 return _val
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
537
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
538
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
539 class SpaceSeparatedListOption(Option):
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
540
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
541 """List of space seperated elements.
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
542 """
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
543
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
544 class_description = "A list of space separated elements."
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
545
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
546 def get(self):
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
547 _val = Option.get(self)
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
548 pathlist = list(_val.split())
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
549 if pathlist:
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
550 return pathlist
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
551 else:
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
552 return None
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
553
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
554
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
555 class OriginHeadersListOption(Option):
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
556
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
557 """List of space seperated origin header values.
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
558 """
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
559
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
560 class_description = "A list of space separated case sensitive\norigin headers 'scheme://host'."
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
561
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
562 def set(self, _val):
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
563 pathlist = list(_val.split())
7155
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
564 if '*' in pathlist and pathlist[0] != '*':
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
565 raise OptionValueError(
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
566 self, _val,
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
567 "If using '*' it must be the first element.")
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
568 self._value = pathlist
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
569
6682
0b8d34b64930 issue2551205 bugfix missing _value2str
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
570 def _value2str(self, value):
0b8d34b64930 issue2551205 bugfix missing _value2str
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
571 return ','.join(value)
0b8d34b64930 issue2551205 bugfix missing _value2str
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
572
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
573
5231
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
574 class MultiFilePathOption(Option):
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
575
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
576 """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
577
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
578 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
579 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
580
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
581 """
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
582
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
583 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
584 "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
585
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
586 def get(self):
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
587 pathlist = []
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
588 _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
589 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
590 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
591 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
592 else:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
593 pathlist.append(elem)
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
594 if pathlist:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
595 return pathlist
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
596 else:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
597 return None
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
598
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
599
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
600 class FloatNumberOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
601
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
602 """Floating point numbers"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
603
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
604 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
605 try:
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
606 return float(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
607 except ValueError:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
608 raise OptionValueError(self, value,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
609 "Floating point number required")
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
610
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
611 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
612 _val = str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
613 # strip fraction part from integer numbers
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
614 if _val.endswith(".0"):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
615 _val = _val[:-2]
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
616 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
617
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
618
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
619 class IntegerNumberOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
620
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
621 """Integer numbers"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
622
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
623 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
624 try:
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
625 return int(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
626 except ValueError:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
627 raise OptionValueError(self, value, "Integer number required")
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
628
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
629
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
630 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
631
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
632 """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
633
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
634 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
635 try:
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
636 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
637 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
638 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
639 "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
640 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
641 except OptionValueError:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
642 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
643 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
644 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
645
7567
5e118944ef75 flake8: add extra blank lines
John Rouillard <rouilj@ieee.org>
parents: 7556
diff changeset
646
7556
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
647 class IntegerNumberGtZeroOption(Option):
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
648
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
649 """Integer numbers greater than zero."""
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
650
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
651 def str2value(self, value):
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
652 try:
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
653 v = int(value)
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
654 if v < 1:
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
655 raise OptionValueError(self, value,
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
656 "Integer number greater than zero required")
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
657 return v
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
658 except OptionValueError:
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
659 raise # pass through subclass
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
660 except ValueError:
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
661 raise OptionValueError(self, value, "Integer number required")
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
662
7567
5e118944ef75 flake8: add extra blank lines
John Rouillard <rouilj@ieee.org>
parents: 7556
diff changeset
663
3609
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
664 class OctalNumberOption(Option):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
665
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
666 """Octal Integer numbers"""
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
667
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
668 def str2value(self, value):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
669 try:
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
670 return int(value, 8)
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
671 except ValueError:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
672 raise OptionValueError(self, value,
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
673 "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
674
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
675 def _value2str(self, value):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
676 return oct(value)
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
677
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
678
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
679 class MandatoryOption(Option):
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
680 """Option must not be empty"""
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
681 def str2value(self, value):
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
682 if not value:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
683 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
684 else:
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
685 return value
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
686
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
687
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
688 class SecretOption(Option):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
689 """A string not beginning with file:// or a file starting with file://
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
690
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
691 Paths may be either absolute or relative to the HOME.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
692 Value for option is the first line in the file.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
693 It is mean to store secret information in the config file but
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
694 allow the config file to be stored in version control without
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
695 storing the secret there.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
696
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
697 """
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
698
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
699 class_description = (
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
700 "A string that starts with 'file://' is interpreted\n"
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
701 "as a file path relative to the tracker home. Using\n"
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
702 "'file:///' defines an absolute path. The first\n"
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
703 "line of the file will be used as the value. Any\n"
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
704 "string that does not start with 'file://' is used\n"
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
705 "as is. It removes any whitespace at the end of the\n"
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
706 "line, so a newline can be put in the file.\n")
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
707
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
708 def get(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
709 _val = Option.get(self)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
710 if isinstance(_val, str) and _val.startswith('file://'):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
711 filepath = _val[7:]
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
712 if filepath and not os.path.isabs(filepath):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
713 filepath = os.path.join(self.config["HOME"], filepath.strip())
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
714 try:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
715 with open(filepath) as f:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
716 _val = f.readline().rstrip()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
717 # except FileNotFoundError: py2/py3
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
718 # compatible version
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
719 except EnvironmentError as e:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
720 if e.errno != errno.ENOENT:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
721 raise
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
722 else:
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
723 raise OptionValueError(
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
724 self, _val,
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
725 "Unable to read value for %s. Error opening "
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
726 "%s: %s." % (self.name, e.filename, e.args[1]))
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
727 return self.str2value(_val)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
728
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
729 def validate(self, options):
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
730 if self.name == 'MAIL_PASSWORD':
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
731 if options['MAIL_USERNAME']._value:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
732 # MAIL_PASSWORD is an exception. It is mandatory only
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
733 # if MAIL_USERNAME is set. So check only if username
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
734 # is set.
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
735 try:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
736 self.get()
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
737 except OptionUnsetError:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
738 # provide error message with link to MAIL_USERNAME
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
739 raise OptionValueError(
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
740 options["MAIL_PASSWORD"],
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
741 "not defined",
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
742 "Mail username is set, so this must be defined.")
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
743 else:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
744 self.get()
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
745
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
746
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
747 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
748 """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
749
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
750 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
751 if not value:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
752 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
753
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
754 error_msg = ''
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
755 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
756 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
757
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
758 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
759 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
760
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
761 if error_msg:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
762 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
763 else:
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
764 return value
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
765
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
766
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
767 class NullableOption(Option):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
768
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
769 """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
770
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
771 Default nullable strings list contains empty string only.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
772 There is constructor parameter allowing to specify different nullables.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
773
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
774 Conversion to external representation returns the first of the NULL
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
775 strings list when the value is None.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
776
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
777 """
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
778
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
779 NULL_STRINGS = ("",)
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
780
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
781 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
782 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
783 null_strings=NULL_STRINGS):
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
784 self.null_strings = list(null_strings)
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
785 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
786 description, aliases)
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
787
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
788 def str2value(self, value):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
789 if value in self.null_strings:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
790 return None
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
791 else:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
792 return value
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
793
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
794 def _value2str(self, value):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
795 if value is None:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
796 return self.null_strings[0]
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
797 else:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
798 return value
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
799
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
800
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
801 class NullableFilePathOption(NullableOption, FilePathOption):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
802
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
803 # .get() and class_description are from FilePathOption,
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
804 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
805 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
806 # everything else taken from NullableOption (inheritance order)
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
807
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
808
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
809 class SecretMandatoryOption(MandatoryOption, SecretOption):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
810 # use get from SecretOption and rest from MandatoryOption
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
811 get = SecretOption.get
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
812 class_description = SecretOption.class_description
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
813
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
814
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
815 class SecretNullableOption(NullableOption, SecretOption):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
816 # use get from SecretOption and rest from NullableOption
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
817 get = SecretOption.get
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
818 class_description = SecretOption.class_description
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
819
7844
b95474b23440 chore(lint): whitespace fixes, double space between class stanzas
John Rouillard <rouilj@ieee.org>
parents: 7812
diff changeset
820
7809
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
821 class ListSecretOption(SecretOption):
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
822 # use get from SecretOption
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
823 def get(self):
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
824 value = SecretOption.get(self)
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
825 return [x.lstrip() for x in value.split(',')]
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
826
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
827 class_description = SecretOption.class_description
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
828
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
829 def validate(self, options): # noqa: ARG002 -- options unused
7809
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
830 if self.name == "WEB_JWT_SECRET":
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
831 secrets = self.get()
7844
b95474b23440 chore(lint): whitespace fixes, double space between class stanzas
John Rouillard <rouilj@ieee.org>
parents: 7812
diff changeset
832 invalid_secrets = [x for x in secrets[1:] if len(x) < 32]
7809
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
833 if invalid_secrets:
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
834 raise OptionValueError(
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
835 self, ", ".join(secrets),
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
836 "One or more secrets less then 32 characters in length\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
837 "found: %s" % ', '.join(invalid_secrets))
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
838 else:
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
839 self.get()
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
840
7844
b95474b23440 chore(lint): whitespace fixes, double space between class stanzas
John Rouillard <rouilj@ieee.org>
parents: 7812
diff changeset
841
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
842 class RedisUrlOption(SecretNullableOption):
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
843 """Do required check to make sure known bad parameters are not
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
844 put in the url.
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
845
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
846 Should I do more URL validation? Validate schema:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
847 redis, rediss, unix? How many cycles to invest
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
848 to keep users from their own mistakes?
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
849 """
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
850
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
851 class_description = SecretNullableOption.class_description
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
852
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
853 def str2value(self, value):
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
854 if value and value.find("decode_responses") != -1:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
855 raise OptionValueError(self, value, "URL must not include "
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
856 "decode_responses. Please remove "
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
857 "the option.")
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
858 return value
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
859
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
860
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
861 class SessiondbBackendOption(Option):
7219
5c71b27aa68e fix typo
John Rouillard <rouilj@ieee.org>
parents: 7183
diff changeset
862 """Make sure that sessiondb is compatible with the primary db.
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
863 Fail with error and suggestions if they are incompatible.
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
864 """
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
865
7845
0c71ac9cdcd0 chore(lint): change class props from mutable lists to tuples
John Rouillard <rouilj@ieee.org>
parents: 7844
diff changeset
866 compatibility_matrix = (
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
867 ('anydbm', 'anydbm'),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
868 ('anydbm', 'redis'),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
869 ('sqlite', 'anydbm'),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
870 ('sqlite', 'sqlite'),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
871 ('sqlite', 'redis'),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
872 ('mysql', 'mysql'),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
873 ('postgresql', 'postgresql'),
7845
0c71ac9cdcd0 chore(lint): change class props from mutable lists to tuples
John Rouillard <rouilj@ieee.org>
parents: 7844
diff changeset
874 )
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
875
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
876 def validate(self, options):
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
877 ''' make sure session db is compatible with primary db.
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
878 also if redis is specified make sure it's available.
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
879 suggest valid session db backends include redis if
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
880 available.
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
881 '''
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
882
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
883 if self.name == 'SESSIONDB_BACKEND':
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
884 rdbms_backend = options['RDBMS_BACKEND']._value
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
885 sessiondb_backend = self._value
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
886
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
887 if not sessiondb_backend:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
888 # unset will choose default
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
889 return
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
890
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
891 redis_available = False
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
892 try:
7810
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
893 import redis # noqa: F401
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
894 redis_available = True
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
895 except ImportError:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
896 if sessiondb_backend == 'redis':
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
897 valid_session_backends = ', '.join(sorted(
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
898 [x[1] for x in self.compatibility_matrix
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
899 if x[0] == rdbms_backend and x[1] != 'redis']))
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
900 raise OptionValueError(
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
901 self, sessiondb_backend,
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
902 "Unable to load redis module. Please install "
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
903 "a redis library or choose\n an alternate "
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
904 "session db: %(valid_session_backends)s" % locals())
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
905
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
906 if ((rdbms_backend, sessiondb_backend) not in
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
907 self.compatibility_matrix):
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
908 valid_session_backends = ', '.join(sorted(
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
909 {x[1] for x in self.compatibility_matrix
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
910 if x[0] == rdbms_backend and
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
911 (redis_available or x[1] != 'redis')}))
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
912
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
913 raise OptionValueError(
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
914 self, sessiondb_backend,
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
915 "You can not use session db type: %(sessiondb_backend)s "
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
916 "with %(rdbms_backend)s.\n Valid session db types: "
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
917 "%(valid_session_backends)s." % locals())
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
918
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
919
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
920 class TimezoneOption(Option):
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
921
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
922 class_description = \
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
923 "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
924 "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
925 "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
926 "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
927
5754
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
928 # 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
929 # 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
930 try:
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
931 import pytz
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
932 defaulttz = "UTC"
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
933 except ImportError:
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
934 defaulttz = "0"
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
935
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
936 def str2value(self, value):
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
937 try:
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
938 roundup.date.get_timezone(value)
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
939 except KeyError:
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
940 raise OptionValueError(
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
941 self, value,
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
942 "Timezone name or numeric hour offset required")
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
943 return value
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
944
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
945
6514
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
946 class HttpVersionOption(Option):
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
947 """Used by roundup-server to verify http version is set to valid
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
948 string."""
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
949
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
950 def str2value(self, value):
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
951 if value not in ["HTTP/1.0", "HTTP/1.1"]:
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
952 raise OptionValueError(
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
953 self, value,
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
954 "Valid vaues for -V or --http_version are: HTTP/1.0, HTTP/1.1")
6514
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
955 return value
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
956
a036712c96f4 Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents: 6458
diff changeset
957
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
958 class RegExpOption(Option):
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
959
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
960 """Regular Expression option (value is Regular Expression Object)"""
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
961
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
962 class_description = "Value is Python Regular Expression (UTF8-encoded)."
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
963
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
964 RE_TYPE = type(re.compile(""))
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
965
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
966 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
967 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
968 flags=0):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
969 self.flags = flags
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
970 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
971 description, aliases)
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
972
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
973 def _value2str(self, value):
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
974 assert isinstance(value, self.RE_TYPE) # noqa: S101 -- assert is ok
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
975 return value.pattern
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
976
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
977 def str2value(self, value):
5416
56c9bcdea47f Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5395
diff changeset
978 if not isinstance(value, type(u'')):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
979 value = str(value)
5416
56c9bcdea47f Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5395
diff changeset
980 if not isinstance(value, type(u'')):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
981 # if it is 7-bit ascii, use it as string,
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
982 # otherwise convert to unicode.
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
983 try:
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
984 value.decode("ascii")
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
985 except UnicodeError:
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
986 value = value.decode("utf-8")
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
987 return re.compile(value, self.flags)
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
988
7844
b95474b23440 chore(lint): whitespace fixes, double space between class stanzas
John Rouillard <rouilj@ieee.org>
parents: 7812
diff changeset
989
7726
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
990 class LogLevelOption(Option):
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
991 """A log level, one of none, debug, info, warning, error, critical"""
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
992
7844
b95474b23440 chore(lint): whitespace fixes, double space between class stanzas
John Rouillard <rouilj@ieee.org>
parents: 7812
diff changeset
993 values = "none debug info warning error critical".split()
b95474b23440 chore(lint): whitespace fixes, double space between class stanzas
John Rouillard <rouilj@ieee.org>
parents: 7812
diff changeset
994 class_description = "Allowed values: %s" % (', '.join(values))
7726
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
995
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
996 def str2value(self, value):
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
997 _val = value.lower()
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
998 if _val in self.values:
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
999 return _val
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
1000 else:
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
1001 raise OptionValueError(self, value, self.class_description)
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
1002
7844
b95474b23440 chore(lint): whitespace fixes, double space between class stanzas
John Rouillard <rouilj@ieee.org>
parents: 7812
diff changeset
1003
6730
031996eb9bb5 document jinja2 as valid setting for template_engine in config.ini
John Rouillard <rouilj@ieee.org>
parents: 6688
diff changeset
1004 try:
7810
890097bc4cd0 chore(ruff): sort imports
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
1005 import jinja2 # noqa: F401
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
1006 jinja2_avail = "Available found"
6730
031996eb9bb5 document jinja2 as valid setting for template_engine in config.ini
John Rouillard <rouilj@ieee.org>
parents: 6688
diff changeset
1007 except ImportError:
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
1008 jinja2_avail = "Unavailable needs"
6730
031996eb9bb5 document jinja2 as valid setting for template_engine in config.ini
John Rouillard <rouilj@ieee.org>
parents: 6688
diff changeset
1009
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
1010 # Main configuration layout.
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1011 # Config is described as a sequence of sections,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1012 # where each section name is followed by a sequence
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1013 # of Option definitions. Each Option definition
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1014 # is a sequence containing class name and constructor
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1015 # parameters, starting from the setting name:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1016 # 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
1017 # 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
1018 # 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
1019
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1020
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1021 SETTINGS = (
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1022 ("main", (
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1023 (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
1024 (Option, "template_engine", "zopetal",
a2eb4fb3e6d8 New Chameleon templating engine, engine is now configurable.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4570
diff changeset
1025 "Templating engine to use.\n"
6730
031996eb9bb5 document jinja2 as valid setting for template_engine in config.ini
John Rouillard <rouilj@ieee.org>
parents: 6688
diff changeset
1026 "Possible values are:\n"
031996eb9bb5 document jinja2 as valid setting for template_engine in config.ini
John Rouillard <rouilj@ieee.org>
parents: 6688
diff changeset
1027 " 'zopetal' for the old TAL engine ported from Zope,\n"
031996eb9bb5 document jinja2 as valid setting for template_engine in config.ini
John Rouillard <rouilj@ieee.org>
parents: 6688
diff changeset
1028 " 'chameleon' for Chameleon,\n"
031996eb9bb5 document jinja2 as valid setting for template_engine in config.ini
John Rouillard <rouilj@ieee.org>
parents: 6688
diff changeset
1029 " 'jinja2' for jinja2 templating.\n"
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
1030 " %s jinja2 module." % jinja2_avail),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1031 (FilePathOption, "templates", "html",
2863
ae2907da636d added STATIC_FILES option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2850
diff changeset
1032 "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
1033 (MultiFilePathOption, "static_files", "",
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
1034 "A list of space separated directory paths (or a single\n"
7094
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1035 "directory). These directories hold additional public\n"
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1036 "static files available via Web UI. These directories\n"
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1037 "may contain sitewide images, CSS stylesheets etc. If a\n"
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1038 "'-' is included, the list processing ends and the\n"
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1039 "TEMPLATES directory is not searched after the specified\n"
5231
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
1040 "directories. If this option is not set, all static\n"
7094
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1041 "files are taken from the TEMPLATES directory. Access to\n"
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1042 "these files is public, it is not checked against\n"
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1043 "registered users. So do not put any sensitive data in\n"
570abc4c6548 Improve documention on access to templates and static_files.
John Rouillard <rouilj@ieee.org>
parents: 6966
diff changeset
1044 "the files in these directories."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1045 (MailAddressOption, "admin_email", "roundup-admin",
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1046 "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
1047 "into trouble.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1048 "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
1049 "mail -> domain is added."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1050 (MailAddressOption, "dispatcher_email", "roundup-admin",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1051 "The 'dispatcher' is a role that can get notified\n"
7658
d30e534b078a clarify doc on dispatcher_email config setting.
John Rouillard <rouilj@ieee.org>
parents: 7567
diff changeset
1052 "when errors occur while sending email to a user.\n"
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1053 "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
1054 "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
1055 "mail -> domain is added."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1056 (Option, "email_from_tag", "",
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1057 'Additional text to include in the "name" part\n'
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1058 "of the From: address used in nosy messages.\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1059 'If the sending user is "Foo Bar", the From: line\n'
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1060 'is usually: "Foo Bar" <issue_tracker@tracker.example>\n'
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1061 'the EMAIL_FROM_TAG goes inside the "Foo Bar" quotes like so:\n'
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1062 '"Foo Bar EMAIL_FROM_TAG" <issue_tracker@tracker.example>'),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1063 (Option, "new_web_user_roles", "User",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1064 "Roles that a user gets when they register\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1065 "with Web User Interface.\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1066 "This is a comma-separated string of role names\n"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1067 " (e.g. 'Admin,User')."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1068 (Option, "new_email_user_roles", "User",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1069 "Roles that a user gets when they register\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1070 "with Email Gateway.\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1071 "This is a comma-separated string of role names\n"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1072 " (e.g. 'Admin,User')."),
5315
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
1073 (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
1074 "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
1075 "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
1076 "(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
1077 "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
1078 "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
1079 "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
1080 "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
1081 (Option, "error_messages_to", "user",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1082 'Send error message emails to the "dispatcher", "user", \n'
6355
ac5a6ffa377b Description update. Description was a question not a statement.
John Rouillard <rouilj@ieee.org>
parents: 6354
diff changeset
1083 'or "both" (these are the three allowed values).\n'
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1084 'The dispatcher is configured using the DISPATCHER_EMAIL\n'
6211
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
1085 ' setting.'),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1086 (Option, "html_version", "html4",
7452
bed28b64c581 Add xhtml deprecation notice.
John Rouillard <rouilj@ieee.org>
parents: 7371
diff changeset
1087 "This setting should be left at the default value of html4.\n"
bed28b64c581 Add xhtml deprecation notice.
John Rouillard <rouilj@ieee.org>
parents: 7371
diff changeset
1088 "Support is ending for xhtml mode.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1089 "HTML version to generate. The templates are html4 by default.\n"
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1090 "If you wish to make them xhtml, then you'll need to change\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1091 "this setting to 'xhtml' too so all auto-generated HTML\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1092 "is compliant.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1093 "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
1094 (TimezoneOption, "timezone", TimezoneOption.defaulttz,
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1095 "Default timezone offset,\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1096 "applied when user's timezone is not set.",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1097 ["DEFAULT_TIMEZONE"]),
2649
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2646
diff changeset
1098 (BooleanOption, "instant_registration", "no",
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2646
diff changeset
1099 "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
1100 "email?"),
3469
d3b02352484f enable registration confirmation by web only [SF#1381675]
Richard Jones <richard@users.sourceforge.net>
parents: 3452
diff changeset
1101 (BooleanOption, "email_registration_confirmation", "yes",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1102 "Offer registration confirmation by email or only\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1103 "through the web?"),
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
1104 (IndexerOption, "indexer", "",
5096
e74c3611b138 - issue2550636, issue2550909: Added support for Whoosh indexer.
John Rouillard <rouilj@ieee.org>
parents: 5045
diff changeset
1105 "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
1106 "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
1107 "will be used in the following order:\n"
6588
91ab3e0ffcd0 Summary: Add test cases for sqlite fts
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
1108 "Possible values: xapian, whoosh, native (internal), "
91ab3e0ffcd0 Summary: Add test cases for sqlite fts
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
1109 "native-fts.\nNote 'native-fts' will only be used if set."),
6353
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
1110 (Option, "indexer_language", "english",
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
1111 "Used to determine what language should be used by the\n"
6604
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
1112 "indexer above. Applies to Xapian and PostgreSQL native-fts\n"
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
1113 "indexer. It sets the language for the stemmer, and PostgreSQL\n"
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6588
diff changeset
1114 "native-fts stopwords and other dictionaries.\n"
6353
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
1115 "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
1116 "see indexer documentation for details."),
3544
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
1117 (WordListOption, "indexer_stopwords", "",
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
1118 "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
1119 "your tracker. See the indexer source for the default list of\n"
6588
91ab3e0ffcd0 Summary: Add test cases for sqlite fts
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
1120 "stop-words (eg. A,AND,ARE,AS,AT,BE,BUT,BY, ...). This is\n"
6915
9ff091537f43 postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
1121 "not used by the postgres native-fts indexer. But is used to\n"
9ff091537f43 postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
1122 "filter search terms with the sqlite native-fts indexer."),
5736
1b5bcc5d745f Change umask default to python 3 (put python2 compatible) format with
John Rouillard <rouilj@ieee.org>
parents: 5732
diff changeset
1123 (OctalNumberOption, "umask", "0o002",
3609
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
1124 "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
1125 (IntegerNumberGeqZeroOption, 'csv_field_size', '131072',
4255
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
1126 "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
1127 "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
1128 "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
1129 "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
1130 "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
1131 "import."),
7161
be7849588372 issue2551252 - increase PBKFD2 default rounds to 2,000,000.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
1132 (IntegerNumberGeqZeroOption, 'password_pbkdf2_default_rounds',
7183
2de72f75f2f8 Production PBKDF rounds back to 2M, test 1k; fix empty_form (python2)
John Rouillard <rouilj@ieee.org>
parents: 7180
diff changeset
1133 '2000000',
4486
693c75d56ebe Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4484
diff changeset
1134 "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
1135 "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
1136 "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
1137 "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
1138 "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
1139 "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
1140 "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
1141 "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
1142 "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
1143 "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
1144 "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
1145 "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
1146 "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
1147 "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
1148 "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
1149 )),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1150 ("tracker", (
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1151 (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
1152 "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
1153 (WebUrlOption, "web", NODEFAULT,
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1154 "The web address that the tracker is viewable at.\n"
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1155 "This will be included in information\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1156 "sent to users of the tracker.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1157 "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
1158 "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
1159 "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
1160 (MailAddressOption, "email", "issue_tracker",
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1161 "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
1162 "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
1163 (Option, "replyto_address", "",
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
1164 "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
1165 "nosy messages.\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
1166 "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
1167 "email address (above) is used.\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1168 'If set to "AUTHOR" then the primary email address of the\n'
5098
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
1169 "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
1170 "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
1171 "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
1172 "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
1173 "unusual circumstances.\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
1174 "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
1175 "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
1176 "be able to reply."),
2922
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1177 (NullableOption, "language", "",
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1178 "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
1179 "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
1180 "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
1181 "or LANG, in that order of preference."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1182 )),
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
1183 ("web", (
4088
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
1184 (BooleanOption, "allow_html_file", "no",
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
1185 "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
1186 "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
1187 "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
1188 "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
1189 (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
1190 "Whether to use HTTP Basic Authentication, if present.\n"
6436
1f2f7c0b8968 issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
1191 "Roundup will use either the REMOTE_USER (the value set \n"
1f2f7c0b8968 issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
1192 "by http_auth_header) or HTTP_AUTHORIZATION\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
1193 "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
1194 "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
1195 "Authentication in your web interface."),
6436
1f2f7c0b8968 issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
1196 (Option, "http_auth_header", "",
1f2f7c0b8968 issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
1197 "The HTTP header that holds the user authentication information.\n"
1f2f7c0b8968 issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
1198 "If empty (default) the REMOTE_USER header is used.\n"
1f2f7c0b8968 issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
1199 "This is used when the upstream HTTP server authenticates\n"
1f2f7c0b8968 issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
1200 "the user and passes the username using this HTTP header."),
6458
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1201 (BooleanOption, "dynamic_compression", "yes",
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1202 "Setting this option makes roundup look at the Accept-Encoding\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1203 "header supplied by the client. It will compress the response\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1204 "on the fly using a common encoding. Disable it if your\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1205 "upstream server does compression of dynamic data."),
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1206 (BooleanOption, "use_precompressed_files", "no",
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1207 "Setting this option enables Roundup to serve precompressed\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1208 "static files. The admin must create the compressed files with\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1209 "proper extension (.gzip, .br, .zstd) in the same directory as\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1210 "the uncompressed file. If a precompressed file doesn't\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1211 "exist, the uncompressed file will be served possibly with\n"
8f1b91756457 issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents: 6436
diff changeset
1212 "dynamic compression."),
6053
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
1213 (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
1214 "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
1215 "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
1216 "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
1217 "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
1218 "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
1219 "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
1220 "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
1221 "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
1222 "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
1223 "lowercase."),
6211
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
1224 (BooleanOption, 'cookie_takes_precedence', "no",
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
1225 "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
1226 "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
1227 "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
1228 "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
1229 "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
1230 "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
1231 "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
1232 "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
1233 "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
1234 (IntegerNumberGeqZeroOption, 'login_attempts_min', "3",
5717
cad18de2b988 issue2550949: Rate limit password guesses/login attempts.
John Rouillard <rouilj@ieee.org>
parents: 5698
diff changeset
1235 "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
1236 "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
1237 "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
1238 "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
1239 "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
1240 "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
1241 (IntegerNumberGeqZeroOption, 'registration_delay', "4",
98a8509ce45c issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents: 5956
diff changeset
1242 "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
1243 "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
1244 "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
1245 "the value to 0."),
5976
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
1246 (BooleanOption, 'registration_prevalidate_username', "no",
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
1247 "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
1248 "is available before sending confirmation email.\n"
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
1249 "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
1250 "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
1251 "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
1252 (SameSiteSettingOption, 'samesite_cookie_setting', "Lax",
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
1253 """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
1254 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
1255 '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
1256 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
1257 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
1258 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
1259 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
1260 email)."""),
5603
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
1261 (BooleanOption, 'enable_xmlrpc', "yes",
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
1262 """Whether to enable the XMLRPC API in the roundup web
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1263 interface. By default the XMLRPC endpoint is the string
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1264 'xmlrpc' after the roundup web url configured in the
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1265 'tracker' section. If this variable is set to 'no', the
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1266 xmlrpc path has no special meaning and will yield an
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1267 error message."""),
6658
408fd477761f Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6604
diff changeset
1268 (BooleanOption, 'translate_xmlrpc', 'no',
408fd477761f Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6604
diff changeset
1269 """Whether to enable i18n for the xmlrpc endpoint. Enable it if
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1270 you want to enable translation based on browsers lang
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1271 (if enabled), trackers lang (if set) or environment."""),
5603
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
1272 (BooleanOption, 'enable_rest', "yes",
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
1273 """Whether to enable the REST API in the roundup web
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1274 interface. By default the REST endpoint is the string
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1275 'rest' plus any additional REST-API parameters after the
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1276 roundup web url configured in the tracker section. If this
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1277 variable is set to 'no', the rest path has no special meaning
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1278 and will yield an error message."""),
6658
408fd477761f Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6604
diff changeset
1279 (BooleanOption, 'translate_rest', 'no',
408fd477761f Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6604
diff changeset
1280 """Whether to enable i18n for the rest endpoint. Enable it if
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1281 you want to enable translation based on browsers lang
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1282 (if enabled), trackers lang (if set) or environment."""),
7726
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
1283 (LogLevelOption, 'rest_logging', 'none',
6f66d74d37f3 Add configurable logging for REST
Ralf Schlatterbeck <rsc@runtux.com>
parents: 7719
diff changeset
1284 "Log-Level for REST errors."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1285 (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
1286 "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
1287 "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
1288 "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
1289 "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
1290 "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
1291 "10 seconds results in a 429 error to the caller. It\n"
7556
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1292 "tells them to wait 10 seconds (3600/360) before making\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
1293 "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
1294 "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
1295 "documentation for more info.\n"),
7556
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1296 (IntegerNumberGtZeroOption, '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
1297 "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
1298 "make api_calls_per_interval api calls. Tune this as needed.\n"),
7556
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1299 (IntegerNumberGeqZeroOption, 'api_failed_login_limit', "4",
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1300 "Limit login failure to the API per api_failed_login_interval_in_sec\n"
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1301 "seconds.\n"
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1302 "A value of 0 turns off failed login rate\n"
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1303 "limiting in the API. You should not disable this. See rest\n"
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1304 "documentation for more info.\n"),
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1305 (IntegerNumberGtZeroOption, 'api_failed_login_interval_in_sec', "600",
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1306 "Defines the interval in seconds over which api login failures\n"
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1307 "are recorded. It allows api_failed_login_limit login failures\n"
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7452
diff changeset
1308 "in this time interval. 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
1309 (CsrfSettingOption, 'csrf_enforce_token', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1310 """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
1311 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
1312 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
1313 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
1314 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
1315 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1316 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
1317 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
1318 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1319 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
1320 """),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1321 (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
1322 """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
1323 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
1324 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
1325 (CsrfSettingOption, 'csrf_enforce_token', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1326 """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
1327 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
1328 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
1329 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
1330 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
1331 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1332 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
1333 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
1334 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1335 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
1336 """),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1337 (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
1338 """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
1339 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
1340 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
1341 is ignored.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1342 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
1343 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
1344 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
1345 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
1346 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
1347 (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
1348 """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
1349 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
1350 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
1351 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
1352 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
1353 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
1354 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
1355 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
1356 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
1357 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1358 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
1359 (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
1360 """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
1361 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
1362 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
1363 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
1364 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
1365 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
1366 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1367 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
1368 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
1369 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1370 Set this to 'no' to ignore the header and accept the post."""),
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1371 (OriginHeadersListOption, 'allowed_api_origins', "",
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1372 """A comma separated list of additonal valid Origin header
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1373 values used when enforcing the header origin. They are used
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1374 only for the api URL's (/rest and /xmlrpc). They are not
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1375 used for the usual html URL's. These strings must match the
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1376 value of the Origin header exactly. So 'https://bar.edu' and
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1377 'https://Bar.edu' are two different Origin values. Note that
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1378 the origin value is scheme://host. There is no path
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1379 component. So 'https://bar.edu/' would never be valid.
7155
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
1380 The value '*' can be used to match any origin. It must be
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
1381 first in the list if used. Note that this value allows
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
1382 any web page on the internet to make anonymous requests
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
1383 against your Roundup tracker.
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1384
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1385 You need to set these if you have a web application on a
7155
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 7141
diff changeset
1386 different origin accessing your Roundup instance.
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1387
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1388 (The origin from the tracker.web setting in config.ini is
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6658
diff changeset
1389 always valid and does not need to be specified.)"""),
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1390 (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
1391 """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
1392 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
1393 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
1394 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
1395 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
1396 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
1397 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1398 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
1399 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
1400 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1401 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
1402 (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
1403 """"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
1404 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
1405 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
1406 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
1407 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
1408 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
1409 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
1410 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1411 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
1412 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
1413 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1414 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
1415 (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
1416 """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
1417 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
1418 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
1419 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
1420 (BooleanOption, 'use_browser_language', "yes",
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
1421 "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
1422 "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
1423 "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
1424 "Operating System.\n"
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
1425 "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
1426 (BooleanOption, "debug", "no",
61d48244e7a8 login may now be for a single session
Richard Jones <richard@users.sourceforge.net>
parents: 3544
diff changeset
1427 "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
1428 "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
1429 "tracker admin."),
6684
9ca5cbffa0c4 Switch off using blank passwords for login
John Rouillard <rouilj@ieee.org>
parents: 6682
diff changeset
1430 (BooleanOption, "login_empty_passwords", "no",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1431 "Setting this option to yes/true allows users with\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1432 "an empty/blank password to login to the\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1433 "web/http interfaces."),
4484
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
1434 (BooleanOption, "migrate_passwords", "yes",
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
1435 "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
1436 "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
1437 "when the user logs in via the web-interface."),
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
1438 (SecretMandatoryOption, "secret_key", create_token(),
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
1439 "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
1440 "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
1441 "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
1442 "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
1443 "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
1444 "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
1445 "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
1446 "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
1447 "(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
1448 " roundup-admin updateconfig\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
1449 "is run, so it must be explicitly set to a non-empty string.\n"),
7809
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1450 (ListSecretOption, "jwt_secret", "disabled",
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1451 "This is used to sign/validate json web tokens\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1452 "(JWT). Even if you don't use JWTs it must not be\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1453 "empty. You can use multiple secrets separated by a\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1454 "comma ','. This allows for secret rotation. The newest\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1455 "secret should be placed first and used for signing. The\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1456 "rest of the secrets are used for validating an old JWT.\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1457 "If the first secret is less than 256 bits (32\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1458 "characters) in length JWTs are disabled. If other secrets\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1459 "are less than 32 chars, the application will exit. Removing\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1460 "a secret from this list invalidates all JWTs signed with\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1461 "the secret. JWT support is experimental and disabled by\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1462 "default. The secrets must be persistent across\n"
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7726
diff changeset
1463 "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
1464 )),
2634
f47ca4541770 Both RDBMS backends now use the same config.ini section, [rdbms].
Richard Jones <richard@users.sourceforge.net>
parents: 2630
diff changeset
1465 ("rdbms", (
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
1466 (DatabaseBackend, 'backend', NODEFAULT,
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
1467 "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
1468 (Option, 'name', 'roundup',
7719
3071db43bfb6 feat: issue2550852 - support using a specified PostgreSQL db schema
John Rouillard <rouilj@ieee.org>
parents: 7696
diff changeset
1469 "Name of the database to use. For Postgresql, this can\n"
3071db43bfb6 feat: issue2550852 - support using a specified PostgreSQL db schema
John Rouillard <rouilj@ieee.org>
parents: 7696
diff changeset
1470 "be database.schema to use a specific schema within\n"
3071db43bfb6 feat: issue2550852 - support using a specified PostgreSQL db schema
John Rouillard <rouilj@ieee.org>
parents: 7696
diff changeset
1471 "a Postgres database.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
1472 ['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
1473 (NullableOption, 'host', 'localhost',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1474 "Database server host.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
1475 ['MYSQL_DBHOST']),
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1476 (NullableOption, 'port', '',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1477 "TCP port number of the database server.\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1478 "Postgresql usually resides on port 5432 (if any),\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1479 "for MySQL default port number is 3306.\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1480 "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
1481 (NullableOption, 'user', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1482 "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
1483 ['MYSQL_DBUSER']),
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
1484 (SecretNullableOption, 'password', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1485 "Database user password.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
1486 ['MYSQL_DBPASSWORD']),
7696
4af0d235b570 feat(db): support using postgresql service connection file
John Rouillard <rouilj@ieee.org>
parents: 7658
diff changeset
1487 (NullableOption, 'service', '',
4af0d235b570 feat(db): support using postgresql service connection file
John Rouillard <rouilj@ieee.org>
parents: 7658
diff changeset
1488 "Name of the PostgreSQL connection service for this Roundup\n"
4af0d235b570 feat(db): support using postgresql service connection file
John Rouillard <rouilj@ieee.org>
parents: 7658
diff changeset
1489 "instance. Only used in Postgresql connections. You need to set\n"
4af0d235b570 feat(db): support using postgresql service connection file
John Rouillard <rouilj@ieee.org>
parents: 7658
diff changeset
1490 "up a pg_service.conf file usable by psql use this option."),
3099
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
1491 (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
1492 "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
1493 "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
1494 (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
1495 "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
1496 "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
1497 (Option, 'mysql_charset', 'utf8mb4',
7860
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1498 "Charset to use for mysql connection and databases.\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1499 "If set to 'default', no charset option is used when\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1500 "creating the db connection and utf8mb4 is used for the\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1501 "database charset.\n"
6152
546763f4ce44 Make the charset configurable for mysql
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6126
diff changeset
1502 "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
1503 "Only used in MySQL connections."),
7860
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1504 (Option, 'mysql_collation', 'utf8mb4_unicode_ci',
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1505 "Comparison/order to use for mysql database/table collations.\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1506 "When upgrading, you can use 'utf8' to match the\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1507 "depricated 'utf8mb3'. This must be compatible with the\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1508 "mysql_charset setting above. Only used by MySQL."),
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1509 (Option, 'mysql_binary_collation', 'utf8mb4_0900_bin',
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1510 "Comparison/order to use for mysql database/table collations\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1511 "when matching case. When upgrading, you can use 'utf8_bin'\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1512 "to match the depricated 'utf8mb3_bin' collation. This must\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1513 "be compatible with the mysql_collation above. Only used\n"
8b31893f5930 issue2551115/issue2551282 - utf8mb4 support in roundup
John Rouillard <rouilj@ieee.org>
parents: 7845
diff changeset
1514 "by MySQL."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1515 (IntegerNumberGeqZeroOption, 'sqlite_timeout', '30',
4415
3e35233ea93c new rdbms config item sqlite_timeout...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4411
diff changeset
1516 "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
1517 "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
1518 "Only used in SQLite connections."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1519 (IntegerNumberGeqZeroOption, 'cache_size', '100',
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
1520 "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
1521 (BooleanOption, "allow_create", "yes",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1522 "Setting this option to 'no' protects the database against\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1523 "table creations."),
4474
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1524 (BooleanOption, "allow_alter", "yes",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1525 "Setting this option to 'no' protects the database against\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1526 "table alterations."),
4474
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1527 (BooleanOption, "allow_drop", "yes",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1528 "Setting this option to 'no' protects the database against\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1529 "table drops."),
4471
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1530 (NullableOption, 'template', '',
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1531 "Name of the PostgreSQL template for database creation.\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1532 "For database creation the template used has to match\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1533 "the character encoding used (UTF8), there are different\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1534 "PostgreSQL installations using different templates with\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1535 "different encodings. If you get an error:\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1536 " new encoding (UTF8) is incompatible with the encoding of\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1537 " the template database (SQL_ASCII)\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1538 " HINT: Use the same encoding as in the template database,\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1539 " or use template0 as template.\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1540 "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
1541 "error message."),
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1542 (IsolationOption, 'isolation_level', 'read committed',
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1543 "Database isolation level, currently supported for\n"
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1544 "PostgreSQL and mysql. See, e.g.,\n"
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1545 "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
1546 (BooleanOption, "serverside_cursor", "yes",
6a6b4651be1f Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6300
diff changeset
1547 "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
1548 "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
1549 "client. This option only applies for the postgresql backend."),
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1550 ), "Settings in this section (except for backend) are used\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1551 " by RDBMS backends only.",
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1552 ),
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1553 ("sessiondb", (
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1554 (SessiondbBackendOption, "backend", "",
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1555 "Set backend for storing one time key (otk) and session data.\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1556 "Values have to be compatible with main backend.\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1557 "main\\/ session>| anydbm | sqlite | redis | mysql | postgresql |\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1558 " anydbm | D | | X | | |\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1559 " sqlite | X | D | X | | |\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1560 " mysql | | | | D | |\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1561 " postgresql | | | | | D |\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1562 " -------------------------------------------------------------+\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1563 " D - default if unset, X - compatible choice"),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1564 (RedisUrlOption, "redis_url",
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1565 "redis://localhost:6379/0?health_check_interval=2",
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1566 "URL used to connect to redis. Default uses unauthenticated\n"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1567 "redis database 0 running on localhost with default port.\n"),
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6730
diff changeset
1568 ), "Choose configuration for session and one time key storage."),
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1569 ("logging", (
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1570 (FilePathOption, "config", "",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1571 "Path to configuration file for standard Python logging module.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1572 "If this option is set, logging configuration is loaded\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1573 "from specified file; options 'filename' and 'level'\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1574 "in this section are ignored."),
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1575 (FilePathOption, "filename", "",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1576 "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
1577 "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
1578 "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
1579 (Option, "level", "ERROR",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1580 "Minimal severity level of messages written to log file.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1581 "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
1582 "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
1583 (BooleanOption, "disable_loggers", "no",
94c415c7cd36 Make gunicorn --access-logfile work with custom logging config
John Rouillard <rouilj@ieee.org>
parents: 5878
diff changeset
1584 "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
1585 "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
1586 )),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1587 ("mail", (
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1588 (Option, "domain", NODEFAULT,
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1589 "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
1590 "dispatcher_email belong to.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1591 "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
1592 "explicitly include a domain.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1593 "Do not include the '@' symbol."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1594 (Option, "host", NODEFAULT,
2844
5dddfc64816d mailgw backward-compatibility: "MAILHOST" alias for "MAIL_HOST"
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2839
diff changeset
1595 "SMTP mail host that roundup will use to send mail",
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1596 ["MAILHOST"]),
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1597 (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
1598 "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
1599 "If username is not empty, password (below) MUST be set!"),
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
1600 (SecretMandatoryOption, "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
1601 "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
1602 (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
1603 "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
1604 "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
1605 (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
1606 "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
1607 "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
1608 (BooleanOption, "tls", "no",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1609 "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
1610 "(Transport Layer Security) then set this option to 'yes'."),
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
1611 (NullableFilePathOption, "tls_keyfile", "",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1612 "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
1613 "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
1614 (NullableFilePathOption, "tls_certfile", "",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1615 "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
1616 "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
1617 (Option, "charset", "utf-8",
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1618 "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
1619 "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
1620 "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
1621 "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
1622 "(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
1623 ["EMAIL_CHARSET"]),
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1624 (FilePathOption, "debug", "",
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
1625 "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
1626 "messages to this file *instead* of sending them.\n"
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1627 "This option has the same effect as the environment variable\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1628 "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
1629 (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
1630 "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
1631 "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
1632 (BooleanOption, "add_authoremail", "yes",
7371
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1633 "Add the mail address of the author to the author information\n"
a210f4437b49 Incomplete work to generate config doc from config.ini
John Rouillard <rouilj@ieee.org>
parents: 7251
diff changeset
1634 "at the top of all messages.\n"
3879
454ee9411e85 Fix truncated comment for add_authoremail option.
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3878
diff changeset
1635 "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
1636 "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
1637 "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
1638 ), "Outgoing email options.\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1639 "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
1640 ("mailgw", (
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1641 (EmailBodyOption, "keep_quoted_text", "yes",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1642 "Keep email citations when accepting messages.\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1643 'Setting this to "no" strips out "quoted" text\n'
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1644 'from the message. Setting this to "new" keeps quoted\n'
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1645 "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
1646 "Signatures are also stripped.",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1647 ["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
1648 (EmailBodyOption, "leave_body_unchanged", "no",
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1649 'Setting this to "yes" preserves the email body\n'
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1650 "as is - that is, keep the citations _and_ signatures.\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1651 'Setting this to "new" keeps the body only if we are\n'
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1652 "creating a new issue.",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1653 ["EMAIL_LEAVE_BODY_UNCHANGED"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1654 (Option, "default_class", "issue",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1655 "Default class to use in the mailgw\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1656 "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
1657 "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
1658 ["MAIL_DEFAULT_CLASS"]),
2922
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1659 (NullableOption, "language", "",
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1660 "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
1661 "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
1662 "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
1663 (Option, "subject_prefix_parsing", "strict",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1664 "Controls the parsing of the [prefix] on subject\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1665 'lines in incoming emails. "strict" will return an\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1666 "error to the sender if the [prefix] is not recognised.\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1667 '"loose" will attempt to parse the [prefix] but just\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1668 "pass it through as part of the issue title if not\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1669 'recognised. "none" will always pass any [prefix]\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1670 "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
1671 (Option, "subject_suffix_parsing", "strict",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1672 "Controls the parsing of the [suffix] on subject\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1673 'lines in incoming emails. "strict" will return an\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1674 "error to the sender if the [suffix] is not recognised.\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1675 '"loose" will attempt to parse the [suffix] but just\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1676 "pass it through as part of the issue title if not\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1677 'recognised. "none" will always pass any [suffix]\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1678 "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
1679 (Option, "subject_suffix_delimiters", "[]",
3725
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1680 "Defines the brackets used for delimiting the prefix and \n"
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1681 '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
1682 "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
1683 "be ignored."),
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1684 (Option, "subject_content_match", "always",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1685 "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
1686 "against issue titles in the case where there is no\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1687 'designator [prefix]. "never" turns off matching.\n'
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1688 '"creation + interval" or "activity + interval"\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1689 "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
1690 "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
1691 "Roundup interval."),
4405
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1692 (BooleanOption, "subject_updates_title", "yes",
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1693 "Update issue title if incoming subject of email is different.\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1694 'Setting this to "no" will ignore the title part of'
4405
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1695 " the subject\nof incoming email messages.\n"),
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1696 (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
1697 "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
1698 "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
1699 "stripped from the subject during parsing."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1700 (RegExpOption, "origmsg_re",
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1701 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
1702 "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
1703 "if quoted the in body."),
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1704 (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
1705 "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
1706 "in the message body."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1707 (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
1708 "Regular expression matching end of line."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1709 (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
1710 "Regular expression matching a blank line."),
4424
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1711 (BooleanOption, "unpack_rfc822", "no",
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1712 "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
1713 "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
1714 "set we handle message/rfc822 attachments as a single file."),
3945
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1715 (BooleanOption, "ignore_alternatives", "no",
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1716 "When parsing incoming mails, roundup uses the first\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1717 "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
1718 "multipart/alternative, and this option is set, all other\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1719 "parts of the multipart/alternative are ignored. The default\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1720 "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
1721 (HtmlToTextOption, "convert_htmltotext", "none",
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1722 "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
1723 "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
1724 "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
1725 "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
1726 "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
1727 "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
1728 "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
1729 (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
1730 "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
1731 "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
1732 "(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
1733 "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
1734 ["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
1735 ), "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
1736 ("pgp", (
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1737 (BooleanOption, "enable", "no",
5494
b7fa56ced601 use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5424
diff changeset
1738 "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
1739 "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
1740 "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
1741 "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
1742 (NullableOption, "roles", "",
586679a314f7 role checking for PGP mail and docs
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3915
diff changeset
1743 "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
1744 "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
1745 "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
1746 "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
1747 "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
1748 "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
1749 "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
1750 (NullableOption, "homedir", "",
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1751 "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
1752 "not specified."),
4541
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1753 (BooleanOption, "encrypt", "no",
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1754 "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
1755 "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
1756 "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
1757 "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
1758 "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
1759 "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
1760 (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
1761 "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
1762 "'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
1763 "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
1764 "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
1765 "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
1766 "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
1767 "turned on."),
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1768 ), "OpenPGP mail processing options"),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1769 ("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
1770 (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
1771 "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
1772 "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
1773 "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
1774 "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
1775 "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
1776 ["MESSAGES_TO_AUTHOR"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1777 (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
1778 "Where to place the email signature.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1779 "Allowed values: top, bottom, none",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1780 ["EMAIL_SIGNATURE_POSITION"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1781 (RunDetectorOption, "add_author", "new",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1782 "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
1783 "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
1784 "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
1785 "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
1786 "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
1787 ["ADD_AUTHOR_TO_NOSY"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1788 (RunDetectorOption, "add_recipients", "new",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1789 "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
1790 "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
1791 "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
1792 "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
1793 "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
1794 ["ADD_RECIPIENTS_TO_NOSY"]),
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1795 (Option, "email_sending", "single",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1796 "Controls the email sending from the nosy reactor. If\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1797 '"multiple" then a separate email is sent to each\n'
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1798 'recipient. If "single" then a single email is sent with\n'
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1799 "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
1800 (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
1801 "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
1802 "won't be attached to nosy mails. They will be replaced by\n"
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1803 "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
1804 ), "Nosy messages sending"),
6277
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1805 ("markdown", (
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1806 (BooleanOption, "break_on_newline", "no",
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1807 "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
1808 "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
1809 "(GFM) handling of embedded newlines."),
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1810 ), "Markdown rendering options."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1811 )
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1812
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
1813 # Configuration classes
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1814
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1815
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1816 class Config:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1817
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1818 """Base class for configuration objects.
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1819
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1820 Configuration options may be accessed as attributes or items
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1821 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
1822
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1823 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1824
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1825 # Config file name
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1826 INI_FILE = "config.ini"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1827
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1828 # 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
1829 # 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
1830 # 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
1831 HOME = "."
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1832 # names of .ini file sections, in order
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1833 sections = None
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1834 # section comments
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1835 section_descriptions = None
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1836 # lists of option names for each section, in order
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1837 section_options = None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1838 # mapping from option names and aliases to Option instances
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1839 options = None
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1840 # actual name of the config file. set on load.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1841 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
1842
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
1843 # List of option names that need additional validation after
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
1844 # all options are loaded.
7251
ab0ea9f03866 fix initialization of option_validator
John Rouillard <rouilj@ieee.org>
parents: 7219
diff changeset
1845 option_validators = None
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
1846
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
1847 def __init__(self, config_path=None, layout=None, settings=None):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1848 """Initialize confing instance
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1849
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1850 Parameters:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1851 config_path:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1852 optional directory or file name of the config file.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1853 If passed, load the config after processing layout (if any).
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1854 If config_path is a directory name, use default base name
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1855 of the config file.
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1856 layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1857 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
1858 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
1859 settings:
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1860 optional setting overrides (dictionary).
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1861 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
1862
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1863 """
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
1864 if settings is None:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
1865 settings = {}
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1866 # initialize option containers:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1867 self.sections = []
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1868 self.section_descriptions = {}
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1869 self.section_options = {}
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1870 self.options = {}
7251
ab0ea9f03866 fix initialization of option_validator
John Rouillard <rouilj@ieee.org>
parents: 7219
diff changeset
1871 self.option_validators = []
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1872 # 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
1873 if layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1874 for section in layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1875 self.add_section(*section)
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1876 if config_path is not None:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1877 self.load(config_path)
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1878 for (name, value) in settings.items():
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1879 self[name.upper()] = value
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1880
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1881 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
1882 """Define new config section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1883
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1884 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1885 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
1886 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
1887 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
1888 containing class object and constructor
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1889 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
1890 setting, default, [description, [aliases]]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1891 description - optional section comment
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1892
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1893 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
1894 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
1895 *not* have aliases!
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1896
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1897 """
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
1898 if description or (section not in self.section_descriptions):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1899 self.section_descriptions[section] = description
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1900 for option_def in options:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1901 klass = option_def[0]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1902 args = option_def[1:]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1903 option = klass(self, section, *args)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1904 self.add_option(option)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1905
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1906 def add_option(self, option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1907 """Adopt a new Option object"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1908 _section = option.section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1909 _name = option.setting
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1910 if _section not in self.sections:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1911 self.sections.append(_section)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1912 _options = self._get_section_options(_section)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1913 if _name not in _options:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1914 _options.append(_name)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1915 # (section, name) key is used for writing .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1916 self.options[(_section, _name)] = option
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
1917 # 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
1918 for _name in option.aliases:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1919 self.options[_name] = option
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1920
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
1921 if hasattr(option, 'validate'):
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
1922 self.option_validators.append(option.name)
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
1923
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1924 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
1925 default=NODEFAULT, description=None):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1926 """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
1927
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1928 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1929 name:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1930 option name
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1931 klass:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1932 one of the Option classes
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1933 default:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1934 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
1935 description:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1936 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
1937
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1938 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
1939 is done via string representation.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1940
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1941 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
1942 to options autocreated by UserConfig.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1943
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1944 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1945 # fetch current option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1946 option = self._get_option(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1947 # compute constructor parameters
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1948 if default is NODEFAULT:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1949 default = option.default
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1950 if description is None:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1951 description = option.description
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1952 value = option.value2str(current=1)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1953 # resurrect the option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1954 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
1955 default=default, description=description)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1956 # apply the value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1957 option.set(value)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1958 # incorporate new option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1959 del self[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1960 self.add_option(option)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1961
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1962 def reset(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1963 """Set all options to their default values"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1964 for _option in self.items():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1965 _option.reset()
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1966
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1967 # Meant for commandline tools.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1968 # 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
1969 # roundup-server -p 8017 -u roundup --save-config
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1970 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
1971 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
1972 """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
1973
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1974 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1975 args:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1976 command line to parse (sys.argv[1:])
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1977 short_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1978 optional string of letters for command line options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1979 that are not config options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1980 long_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1981 optional list of names for long options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1982 that are not config options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1983 config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1984 two-element sequence (letter, long_option) defining
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1985 the options for config file. If unset, don't load
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1986 config file; otherwise config file is read prior
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1987 to applying other options. Short option letter
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1988 must not have a colon and long_option name must
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1989 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
1990 options:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1991 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
1992 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
1993 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
1994 (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
1995 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
1996 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
1997
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1998 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
1999 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
2000
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2001 """
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2002 # take a copy of long_options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2003 long_options = list(long_options)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2004 # build option lists
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2005 cfg_names = {}
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2006 booleans = []
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2007 for (name, letter) in options.items():
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2008 cfg_name = name.upper()
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2009 short_opt = "-" + letter[0]
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
2010 name = name.lower().replace("_", "-") # noqa: PLW2901 change name
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2011 cfg_names.update({short_opt: cfg_name, "--" + name: cfg_name})
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2012
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2013 short_options += letter
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2014 if letter[-1] == ":":
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2015 long_options.append(name + "=")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2016 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2017 booleans.append(short_opt)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2018 long_options.append(name)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2019
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2020 if config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2021 short_options += config_load_options[0] + ":"
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2022 long_options.append(config_load_options[1] + "=")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2023 # compute names that will be searched in getopt return value
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2024 config_load_options = (
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2025 "-" + config_load_options[0],
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2026 "--" + config_load_options[1],
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2027 )
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2028 # parse command line arguments
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2029 optlist, args = getopt.getopt(args, short_options, long_options)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2030 # load config file if requested
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2031 if config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2032 for option in optlist:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2033 if option[0] in config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2034 self.load_ini(option[1])
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2035 optlist.remove(option)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2036 break
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2037 # apply options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2038 extra_options = []
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2039 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
2040 if (opt in booleans): # and not arg
7812
ecc34b7917e2 chore(refactor): multiple changes/cleanups
John Rouillard <rouilj@ieee.org>
parents: 7811
diff changeset
2041 arg = "yes" # noqa: PLW2901 -- change arg
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2042 try:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2043 name = cfg_names[opt]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2044 except KeyError:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2045 extra_options.append((opt, arg))
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2046 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2047 self[name] = arg
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2048 return (extra_options, args)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2049
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2050 # 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
2051
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2052 def _get_option(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2053 try:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2054 return self.options[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2055 except KeyError:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2056 raise InvalidOptionError(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2057
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2058 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
2059 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
2060
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2061 def _get_unset_options(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2062 """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
2063
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2064 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
2065 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
2066 appear in the config file.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2067
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2068 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2069 need_set = {}
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2070 for option in self.items():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2071 if not option.isset():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2072 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
2073 return need_set
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2074
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2075 def _adjust_options(self, config):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2076 """Load ad-hoc option definitions from ConfigParser instance."""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2077 pass
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2078
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2079 def _get_name(self):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2080 """Return the service name for config file heading"""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2081 return ""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2082
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2083 # file operations
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2084
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2085 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
2086 """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
2087
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2088 Parameters:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2089 config_path:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2090 directory or file name of the config file.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2091 If config_path is a directory name, use default
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2092 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
2093 defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2094 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
2095
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2096 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
2097 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
2098
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2099 """
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2100 if os.path.isdir(config_path):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2101 home_dir = config_path
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2102 config_path = os.path.join(config_path, self.INI_FILE)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2103 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2104 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
2105 # parse the file
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2106 config_defaults = {"HOME": home_dir}
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2107 if defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2108 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
2109 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
2110 config.read([config_path])
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2111 # .ini file loaded ok.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2112 self.HOME = home_dir
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2113 self.filepath = config_path
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2114 self._adjust_options(config)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2115 # 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
2116 self.reset()
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
2117 for option in self.items():
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
2118 option.load_ini(config)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2119
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2120 def load(self, home_dir):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2121 """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
2122 self.load_ini(home_dir)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2123
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2124 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
2125 """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
2126
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2127 '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
2128 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
2129 HOME is created.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2130
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2131 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
2132 extension.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2133
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2134 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2135 if ini_file is None:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2136 ini_file = self.filepath
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2137 _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
2138 _bak_file = _tmp_file + ".bak"
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2139 _tmp_file = _tmp_file + ".tmp"
7811
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2140 with open(_tmp_file, "wt") as _fp:
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2141 _fp.write("# %s configuration file\n" % self._get_name())
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2142 _fp.write("# Autogenerated at %s\n" % time.asctime())
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2143 need_set = self._get_unset_options()
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2144 if need_set:
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2145 _fp.write("\n# WARNING! Following options need adjustments:\n")
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2146 for section, options in need_set.items():
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2147 _fp.write("# [%s]: %s\n" % (section, ", ".join(options)))
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2148 for section in self.sections:
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2149 comment = self.section_descriptions.get(section, None)
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2150 if comment:
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2151 _fp.write("\n# ".join([""] + comment.split("\n")) + "\n")
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2152 else:
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2153 # no section comment - just leave a blank line between sections
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2154 _fp.write("\n")
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2155 _fp.write("[%s]\n" % section)
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2156 for option in self._get_section_options(section):
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2157 _fp.write("\n" + self.options[(section, option)].format())
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2158
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2159 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
2160 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
2161 os.remove(_bak_file)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2162 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
2163 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
2164
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2165 # container emulation
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2166
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2167 def __len__(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2168 return len(self.items())
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2169
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2170 def __getitem__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2171 if name == "HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2172 return self.HOME
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2173 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2174 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
2175
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2176 def __setitem__(self, name, value):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2177 if name == "HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2178 self.HOME = value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2179 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2180 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
2181
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2182 def __delitem__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2183 _option = self._get_option(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2184 _section = _option.section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2185 _name = _option.setting
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2186 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
2187 del self.options[(_section, _name)]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2188 for _alias in _option.aliases:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2189 del self.options[_alias]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2190
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2191 def items(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2192 """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
2193
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2194 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
2195 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
2196 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
2197
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2198 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2199 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
2200 for _section in self.sections
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
2201 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
2202
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2203 def keys(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2204 """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
2205
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2206 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
2207
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2208 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2209 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
2210
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2211 # .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
2212 # 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
2213
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2214 # attribute emulation
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2215
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2216 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
2217 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
2218 self.__dict__[name] = value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2219 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2220 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
2221
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2222 # 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
2223 # 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
2224 def __getattr__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2225 return self[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2226
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
2227
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2228 class UserConfig(Config):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2229
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2230 """Configuration for user extensions.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2231
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2232 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
2233 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
2234 config file.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2235
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2236 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2237
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2238 def _adjust_options(self, config):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2239 # config defaults appear in all sections.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2240 # 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
2241 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
2242 # 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
2243 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
2244 for section in config.sections():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2245 for name in config.options(section):
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2246 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
2247 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
2248 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
2249
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
2250
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2251 class CoreConfig(Config):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2252
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2253 """Roundup instance configuration.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2254
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2255 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
2256 two additional attributes:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2257 detectors:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2258 user-defined configuration for detectors
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2259 ext:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2260 user-defined configuration for extensions
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2261
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2262 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2263
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2264 # user configs
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2265 ext = None
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2266 detectors = None
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2267
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
2268 def __init__(self, home_dir=None, settings=None):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
2269 if settings is None:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
2270 settings = {}
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
2271 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
2272 # 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
2273 if home_dir is None:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2274 self.init_logging()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2275
4342
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
2276 def copy(self):
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
2277 new = CoreConfig()
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
2278 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
2279 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
2280 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
2281 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
2282 return new
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
2283
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
2284 def _get_unset_options(self):
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
2285 need_set = Config._get_unset_options(self)
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
2286 # remove MAIL_PASSWORD if MAIL_USER is empty
7811
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2287 if "password" in need_set.get("mail", []) and \
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2288 not self["MAIL_USERNAME"]:
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2289 settings = need_set["mail"]
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2290 settings.remove("password")
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2291 if not settings:
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2292 del need_set["mail"]
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
2293 return need_set
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2294
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2295 def _get_name(self):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2296 return self["TRACKER_NAME"]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
2297
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2298 def reset(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2299 Config.reset(self)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2300 if self.ext:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2301 self.ext.reset()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2302 if self.detectors:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2303 self.detectors.reset()
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
2304 self.init_logging()
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
2305
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
2306 def init_logging(self):
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
2307 _file = self["LOGGING_CONFIG"]
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
2308 if _file and os.path.isfile(_file):
6966
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
2309 logging.config.fileConfig(
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
2310 _file,
8733aa2a8e40 flake8 fixes.
John Rouillard <rouilj@ieee.org>
parents: 6915
diff changeset
2311 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
2312 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
2313
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
2314 _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
2315 # 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
2316 logger = logging.getLogger('roundup')
7811
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2317 hdlr = logging.FileHandler(_file) if _file else \
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2318 logging.StreamHandler(sys.stdout)
a4b71f16c264 chore(refactor): use 'with open'; if ternarys; unnested if statements
John Rouillard <rouilj@ieee.org>
parents: 7810
diff changeset
2319
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
2320 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
2321 '%(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
2322 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
2323 # 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
2324 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
2325 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
2326 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
2327 logger.handlers = [hdlr]
5424
fd0481aa17b8 Python 3 preparation: avoid logging._levelNames.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5416
diff changeset
2328 logger.setLevel(self["LOGGING_LEVEL"] or "ERROR")
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2329
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2330 def validator(self, options):
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2331 """ Validate options once all options are loaded.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2332
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2333 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
2334 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
2335 validated if xapian indexer is used.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2336 """
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2337
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
2338 for option in self.option_validators:
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
2339 # validate() should throw an exception if there is an issue.
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
2340 options[option].validate(options)
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6562
diff changeset
2341
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2342 def load(self, home_dir):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2343 """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
2344 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
2345 self.load_ini(home_dir)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2346 else:
6300
778a9f455067 Remove old code import imp, old style trackers db/backend_name
John Rouillard <rouilj@ieee.org>
parents: 6277
diff changeset
2347 raise NoConfigError(home_dir)
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2348
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2349 # validator does inter-setting validation checks.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2350 # when there are dependencies between options.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2351 self.validator(self.options)
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
2352
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2353 self.init_logging()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2354 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
2355 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
2356
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2357 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
2358 """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
2359 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
2360 if defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2361 config_defaults.update(defaults)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2362 Config.load_ini(self, home_dir, config_defaults)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2363
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2364 # 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
2365 def __getitem__(self, name):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2366 if name == "TRACKER_HOME":
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2367 return self.HOME
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2368 else:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2369 return Config.__getitem__(self, name)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2370
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2371 def __setitem__(self, name, value):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2372 if name == "TRACKER_HOME":
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2373 self.HOME = value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2374 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2375 self._get_option(name).set(value)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2376
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2377 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
2378 if name == "TRACKER_HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2379 self.__dict__["HOME"] = value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2380 else:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
2381 Config.__setattr__(self, name, value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2382
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2383 # vim: set et sts=4 sw=4 :

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