annotate roundup/init.py @ 8562:9c3ec0a5c7fc

chore: remove __future print_funcion from code. Not needed as of Python 3.
author John Rouillard <rouilj@ieee.org>
date Wed, 08 Apr 2026 21:39:40 -0400
parents 586f76eb33e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
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 """
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
20 __docformat__ = 'restructuredtext'
26
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
21
7174
8219c7405a29 chore: flake8 fix multiple imports on one line
John Rouillard <rouilj@ieee.org>
parents: 6011
diff changeset
22 import email.parser
8219c7405a29 chore: flake8 fix multiple imports on one line
John Rouillard <rouilj@ieee.org>
parents: 6011
diff changeset
23 import errno
7228
07ce4e4110f5 flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents: 7174
diff changeset
24 import os
4818
edb171528a7d init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents: 4817
diff changeset
25
204
c1461733cbf9 Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents: 201
diff changeset
26
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
27 from roundup import install_util
8091
586f76eb33e8 fix: keep python2 working a little longer.
John Rouillard <rouilj@ieee.org>
parents: 8088
diff changeset
28 from roundup.anypy import scandir_
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
29 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
30 from roundup.i18n import _
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
32
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 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
34 """Recursively copy a directory tree using copyDigestedFile().
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35
4026
c8b0a23ba38d Fix issue2550493: hide 'hidden' files.
Stefan Seefeld <stefan@seefeld.name>
parents: 3432
diff changeset
36 The destination directory is allowed to exist.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 If the optional symlinks flag is true, symbolic links in the
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 source tree result in symbolic links in the destination tree; if
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 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
41 links are copied.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42
1103
db787cef1385 handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents: 1085
diff changeset
43 This was copied from shutil.py in std lib.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 """
4026
c8b0a23ba38d Fix issue2550493: hide 'hidden' files.
Stefan Seefeld <stefan@seefeld.name>
parents: 3432
diff changeset
45
c8b0a23ba38d Fix issue2550493: hide 'hidden' files.
Stefan Seefeld <stefan@seefeld.name>
parents: 3432
diff changeset
46 # Prevent 'hidden' files (those starting with '.') from being considered.
8088
1045425c23b2 refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents: 7228
diff changeset
47 names = [f.name for f in os.scandir(src) if not f.name.startswith('.')]
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 try:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 os.mkdir(dst)
5248
198b6e810c67 Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents: 5041
diff changeset
50 except OSError as error:
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
51 if error.errno != errno.EEXIST: raise # noqa
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 for name in names:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 srcname = os.path.join(src, name)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 dstname = os.path.join(dst, name)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 if symlinks and os.path.islink(srcname):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 linkto = os.readlink(srcname)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 os.symlink(linkto, dstname)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 elif os.path.isdir(srcname):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 copytree(srcname, dstname, symlinks)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 else:
388
2d92f93072f9 Code using copyDigestedFile() that passes unit tests
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 270
diff changeset
61 install_util.copyDigestedFile(srcname, dstname)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
63
3432
3876b94ffe8c install: accept configuration setting overrides
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2953
diff changeset
64 def install(instance_home, template, settings={}):
738
7e093cbaaa98 split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
65 '''Install an instance using the named template and backend.
208
1894a28a1e66 Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
66
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
67 'instance_home'
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
68 the directory to place the instance data in
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
69 'template'
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
70 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
71 'settings'
3876b94ffe8c install: accept configuration setting overrides
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2953
diff changeset
72 config.ini setting overrides (dictionary)
208
1894a28a1e66 Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
73
1894a28a1e66 Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
74 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
75 the named template (roundup.templates.<name>). A usual instance_home
208
1894a28a1e66 Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
76 contains:
1894a28a1e66 Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
77
2862
22c459281026 tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2766
diff changeset
78 config.ini
22c459281026 tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2766
diff changeset
79 tracker configuration file
22c459281026 tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2766
diff changeset
80 schema.py
22c459281026 tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2766
diff changeset
81 database schema definition
22c459281026 tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2766
diff changeset
82 initial_data.py
22c459281026 tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2766
diff changeset
83 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
84 with 'roundup-admin init' command
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
85 interfaces.py
2862
22c459281026 tracker layout notes in install() docstring updated for new layout
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2766
diff changeset
86 (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
87 the CGI Client and mail gateway MailGW classes that are
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
88 used by roundup.cgi, roundup-server and roundup-mailgw.
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
89 db/
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
90 the actual database that stores the instance's data
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
91 html/
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
92 the html templates that are used by the CGI Client
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
93 detectors/
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1916
diff changeset
94 the auditor and reactor modules for this instance
2700
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
95 extensions/
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
96 code extensions to Roundup
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 '''
1591
21312a7564fd moving templates around
Richard Jones <richard@users.sourceforge.net>
parents: 1467
diff changeset
98 # 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
99 copytree(template, instance_home)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
101 # 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
102 ti = loadTemplateInfo(instance_home)
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
103 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
104 saveTemplateInfo(instance_home, ti)
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
105
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
106 # 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
107 # 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
108 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
109 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
110 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
111 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
112
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
113
8088
1045425c23b2 refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents: 7228
diff changeset
114 def listTemplates(directory):
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
115 ''' 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
116
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
117 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
118
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
119 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
120 '''
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
121 ret = {}
8088
1045425c23b2 refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents: 7228
diff changeset
122 for dir_entry in os.scandir(directory):
1045425c23b2 refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents: 7228
diff changeset
123 ti = loadTemplateInfo(dir_entry.path)
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
124 if ti:
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
125 ret[ti['name']] = ti
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
126 return ret
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
127
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
128
4817
785bd25371d3 init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents: 4570
diff changeset
129 def loadTemplateInfo(path):
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
130 ''' 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
131
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
132 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
133 dictionary.
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
134 '''
4817
785bd25371d3 init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents: 4570
diff changeset
135 tif = os.path.join(path, 'TEMPLATE-INFO.txt')
785bd25371d3 init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents: 4570
diff changeset
136 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
137 return None
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
138
4817
785bd25371d3 init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents: 4570
diff changeset
139 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
140 print(_("WARNING: directory '%s'\n"
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
141 "\tcontains old-style template - ignored")
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
142 % 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
143 return None
1e7a3c001c6a ignore old-style tracker templates [SF#1071402]; remove unused imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2889
diff changeset
144
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
145 # load up the template's information
4895
c86bc9646652 Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents: 4818
diff changeset
146 try:
c86bc9646652 Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents: 4818
diff changeset
147 f = open(tif)
4818
edb171528a7d init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents: 4817
diff changeset
148 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
149 ti = {}
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
150 ti['name'] = m['name']
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
151 ti['description'] = m['description']
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
152 ti['intended-for'] = m['intended-for']
4817
785bd25371d3 init.loadTemplateInfo: Cleanup code
anatoly techtonik <techtonik@gmail.com>
parents: 4570
diff changeset
153 ti['path'] = path
4895
c86bc9646652 Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents: 4818
diff changeset
154 finally:
c86bc9646652 Revert changes in commit 785bd25371
John Kristensen <john@jerrykan.com>
parents: 4818
diff changeset
155 f.close()
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
156 return ti
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
157
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
158
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
159 def writeHeader(name, value):
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
160 ''' 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
161 '''
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
162 out = [name.capitalize() + ':']
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
163 n = len(out[0])
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
164 for word in value.split():
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
165 if len(word) + n > 74:
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
166 out.append('\n')
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
167 n = 0
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
168 out.append(' ' + word)
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
169 n += len(out[-1])
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
170 return ''.join(out) + '\n'
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
171
6011
8bd93c8e98a6 Flake8 cleanup. remove unused imports; formatting fixes.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
172
1916
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
173 def saveTemplateInfo(dir, info):
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
174 ''' 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
175 file in the indicated directory.
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
176 '''
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
177 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
178 f = open(ti, 'w')
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
179 try:
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
180 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
181 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
182 finally:
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
183 f.close()
d157b9b56ebf implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents: 1728
diff changeset
184
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
185 # vim: set filetype=python sts=4 sw=4 et si :

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