Mercurial > p > roundup > code
annotate roundup/init.py @ 6941:bd2c3b2010c3
issue2551232 - modify in-reply-to threading when multiple matches
if an email is missing an issue designator, in-reply-to threading is
attempted. In this change if in-reply-to threading matches multiple
issues, fall back to matching on subject. It used to just arbitrairly
choose the first matching issue.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 08 Sep 2022 18:49:46 -0400 |
| parents | 8bd93c8e98a6 |
| children | 8219c7405a29 |
| rev | line source |
|---|---|
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
1 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
6 # |
| 214 | 7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
11 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
2766
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
17 # |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
18 """Init (create) a roundup instance. |
|
406
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
388
diff
changeset
|
19 """ |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
20 from __future__ import print_function |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
21 __docformat__ = 'restructuredtext' |
|
26
c7c14960f413
Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
25
diff
changeset
|
22 |
|
4818
edb171528a7d
init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents:
4817
diff
changeset
|
23 import os, errno, email.parser |
|
edb171528a7d
init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents:
4817
diff
changeset
|
24 |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
201
diff
changeset
|
25 |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
26 from roundup import install_util |
|
2766
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
27 from roundup.configuration import CoreConfig |
|
2953
1e7a3c001c6a
ignore old-style tracker templates [SF#1071402]; remove unused imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2889
diff
changeset
|
28 from roundup.i18n import _ |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
30 |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 def copytree(src, dst, symlinks=0): |
|
388
2d92f93072f9
Code using copyDigestedFile() that passes unit tests
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
270
diff
changeset
|
32 """Recursively copy a directory tree using copyDigestedFile(). |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 |
|
4026
c8b0a23ba38d
Fix issue2550493: hide 'hidden' files.
Stefan Seefeld <stefan@seefeld.name>
parents:
3432
diff
changeset
|
34 The destination directory is allowed to exist. |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 If the optional symlinks flag is true, symbolic links in the |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 source tree result in symbolic links in the destination tree; if |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 it is false, the contents of the files pointed to by symbolic |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 links are copied. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1085
diff
changeset
|
41 This was copied from shutil.py in std lib. |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 """ |
|
4026
c8b0a23ba38d
Fix issue2550493: hide 'hidden' files.
Stefan Seefeld <stefan@seefeld.name>
parents:
3432
diff
changeset
|
43 |
|
c8b0a23ba38d
Fix issue2550493: hide 'hidden' files.
Stefan Seefeld <stefan@seefeld.name>
parents:
3432
diff
changeset
|
44 # Prevent 'hidden' files (those starting with '.') from being considered. |
|
c8b0a23ba38d
Fix issue2550493: hide 'hidden' files.
Stefan Seefeld <stefan@seefeld.name>
parents:
3432
diff
changeset
|
45 names = [f for f in os.listdir(src) if not f.startswith('.')] |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 try: |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 os.mkdir(dst) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5041
diff
changeset
|
48 except OSError as error: |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
49 if error.errno != errno.EEXIST: raise # noqa |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 for name in names: |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 srcname = os.path.join(src, name) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 dstname = os.path.join(dst, name) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 if symlinks and os.path.islink(srcname): |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 linkto = os.readlink(srcname) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 os.symlink(linkto, dstname) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 elif os.path.isdir(srcname): |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 copytree(srcname, dstname, symlinks) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 else: |
|
388
2d92f93072f9
Code using copyDigestedFile() that passes unit tests
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
270
diff
changeset
|
59 install_util.copyDigestedFile(srcname, dstname) |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
61 |
|
3432
3876b94ffe8c
install: accept configuration setting overrides
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2953
diff
changeset
|
62 def install(instance_home, template, settings={}): |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
63 '''Install an instance using the named template and backend. |
|
208
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
64 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
65 'instance_home' |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
66 the directory to place the instance data in |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
67 'template' |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
68 the directory holding the template to use in creating the instance data |
|
3432
3876b94ffe8c
install: accept configuration setting overrides
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2953
diff
changeset
|
69 'settings' |
|
3876b94ffe8c
install: accept configuration setting overrides
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2953
diff
changeset
|
70 config.ini setting overrides (dictionary) |
|
208
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
71 |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
72 The instance_home directory will be created using the files found in |
|
2862
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
73 the named template (roundup.templates.<name>). A usual instance_home |
|
208
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
74 contains: |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
75 |
|
2862
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
76 config.ini |
|
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
77 tracker configuration file |
|
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
78 schema.py |
|
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
79 database schema definition |
|
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
80 initial_data.py |
|
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
81 database initialization script, used to populate the database |
|
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
82 with 'roundup-admin init' command |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
83 interfaces.py |
|
2862
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
84 (optional, not installed from standard templates) defines |
|
22c459281026
tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2766
diff
changeset
|
85 the CGI Client and mail gateway MailGW classes that are |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
86 used by roundup.cgi, roundup-server and roundup-mailgw. |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
87 db/ |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
88 the actual database that stores the instance's data |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
89 html/ |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
90 the html templates that are used by the CGI Client |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
91 detectors/ |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
92 the auditor and reactor modules for this instance |
| 2700 | 93 extensions/ |
| 94 code extensions to Roundup | |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 ''' |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1467
diff
changeset
|
96 # At the moment, it's just a copy |
|
190
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
97 copytree(template, instance_home) |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
99 # rename the tempate in the TEMPLATE-INFO.txt file |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
100 ti = loadTemplateInfo(instance_home) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
101 ti['name'] = ti['name'] + '-' + os.path.split(instance_home)[1] |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
102 saveTemplateInfo(instance_home, ti) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
103 |
|
2766
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
104 # if there is no config.ini or old-style config.py |
|
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
105 # installed from the template, write default config text |
|
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
106 config_ini_file = os.path.join(instance_home, CoreConfig.INI_FILE) |
|
2953
1e7a3c001c6a
ignore old-style tracker templates [SF#1071402]; remove unused imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2889
diff
changeset
|
107 if not os.path.isfile(config_ini_file): |
|
3432
3876b94ffe8c
install: accept configuration setting overrides
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2953
diff
changeset
|
108 config = CoreConfig(settings=settings) |
|
2766
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
109 config.save(config_ini_file) |
|
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
110 |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
111 |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
112 def listTemplates(dir): |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
113 ''' List all the Roundup template directories in a given directory. |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
114 |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
115 Find all the dirs that contain a TEMPLATE-INFO.txt and parse it. |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
116 |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
117 Return a list of dicts of info about the templates. |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
118 ''' |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
119 ret = {} |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
120 for idir in os.listdir(dir): |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
121 idir = os.path.join(dir, idir) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
122 ti = loadTemplateInfo(idir) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
123 if ti: |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
124 ret[ti['name']] = ti |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
125 return ret |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
126 |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
127 |
|
4817
785bd25371d3
init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
128 def loadTemplateInfo(path): |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
129 ''' Attempt to load a Roundup template from the indicated directory. |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
130 |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
131 Return None if there's no template, otherwise a template info |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
132 dictionary. |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
133 ''' |
|
4817
785bd25371d3
init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
134 tif = os.path.join(path, 'TEMPLATE-INFO.txt') |
|
785bd25371d3
init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
135 if not os.path.exists(tif): |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
136 return None |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
137 |
|
4817
785bd25371d3
init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
138 if os.path.exists(os.path.join(path, 'config.py')): |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
139 print(_("WARNING: directory '%s'\n" |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
140 "\tcontains old-style template - ignored") |
|
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
141 % os.path.abspath(path)) |
|
2953
1e7a3c001c6a
ignore old-style tracker templates [SF#1071402]; remove unused imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2889
diff
changeset
|
142 return None |
|
1e7a3c001c6a
ignore old-style tracker templates [SF#1071402]; remove unused imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2889
diff
changeset
|
143 |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
144 # load up the template's information |
|
4895
c86bc9646652
Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents:
4818
diff
changeset
|
145 try: |
|
c86bc9646652
Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents:
4818
diff
changeset
|
146 f = open(tif) |
|
4818
edb171528a7d
init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents:
4817
diff
changeset
|
147 m = email.parser.Parser().parse(f, True) |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
148 ti = {} |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
149 ti['name'] = m['name'] |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
150 ti['description'] = m['description'] |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
151 ti['intended-for'] = m['intended-for'] |
|
4817
785bd25371d3
init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
152 ti['path'] = path |
|
4895
c86bc9646652
Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents:
4818
diff
changeset
|
153 finally: |
|
c86bc9646652
Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents:
4818
diff
changeset
|
154 f.close() |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
155 return ti |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
156 |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
157 |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
158 def writeHeader(name, value): |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
159 ''' Write an rfc822-compatible header line, making it wrap reasonably |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
160 ''' |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
161 out = [name.capitalize() + ':'] |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
162 n = len(out[0]) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
163 for word in value.split(): |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
164 if len(word) + n > 74: |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
165 out.append('\n') |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
166 n = 0 |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
167 out.append(' ' + word) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
168 n += len(out[-1]) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
169 return ''.join(out) + '\n' |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
170 |
|
6011
8bd93c8e98a6
Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents:
5376
diff
changeset
|
171 |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
172 def saveTemplateInfo(dir, info): |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
173 ''' Save the template info (dict of values) to the TEMPLATE-INFO.txt |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
174 file in the indicated directory. |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
175 ''' |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
176 ti = os.path.join(dir, 'TEMPLATE-INFO.txt') |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
177 f = open(ti, 'w') |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
178 try: |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
179 for name in 'name description intended-for path'.split(): |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
180 f.write(writeHeader(name, info[name])) |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
181 finally: |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
182 f.close() |
|
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1728
diff
changeset
|
183 |
|
2766
b2cd472919c8
if there is no config installed from the template, write default config text;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2700
diff
changeset
|
184 # vim: set filetype=python sts=4 sw=4 et si : |
