Mercurial > p > roundup > code
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 |
| 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 """ |
|
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 | 95 extensions/ |
| 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 : |
